package com.ssy.lingxi.contract.model.vo.applyamount.request;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Positive;
import javax.validation.constraints.PositiveOrZero;
import java.io.Serializable;

/**
 * 保存请款单基础信息请求接口VO
 * @author 伍将
 * @date 2021/3/11
 * @version 2.0.0
 */
public class ApplyAmountOrderSaveBasicsVO implements Serializable {
    private static final long serialVersionUID = -2118828252498739130L;


    /**
     * 数据来源：1：付款计划，2：合同执行  3：手工
     */
    @NotNull(message = "数据来源不能为空")
    private Integer sourceType;

    /**
     * 请款单id(为0代表新增)
     */
    @NotNull(message = "请款单id不能为空")
    @PositiveOrZero(message = "请款单id不能为空")
    private Long id;

    /**
     * 请款单摘要
     */
    @NotBlank(message = "请款单摘要不能为空")
    private String applyAbstract;

    /**
     * 合同id
     */
    @NotNull(message = "合同id不能为空")
    @Positive(message = "合同id不能为空")
    private Long contractId;

    /**
     * 收款账户
     */
    private String payeeName;

    /**
     * 银行账号
     */
    private String bankAccount;

    /**
     * 开户行
     */
    private String bankDeposit;

    /**
     * 付款计划id
     */
    @NotNull(message = "付款计划id不能为空")
    @Positive(message = "付款计划id不能为空")
    private Long payPlanId;

    /**
     * 付款比率
     */
    private Double payRatio;

    /**
     * 请款金额
     */
    @NotNull(message = "请款金额不能为空")
    private Double applyAmount;

    /**
     * 预计付款时间(yyyy-MM-dd)
     */
    @NotBlank(message = "预计付款时间不能为空")
    private String expectPayTime;

    /**
     * 付款方式
     * 1.账期
     * 2.月结
     * 3.现结
     */
    @NotNull(message = "付款方式不能为空")
    @Positive(message = "付款方式不能为空")
    private Integer payWay;

    /**
     * 付款参数（账期天数/请款日）
     */
    private Integer payParam;

    /**
     * 支付方式：2.线下支付
     */
    @Positive(message = "支付方式不能为空")
    private Integer moneyPayWay;

    /**
     * 支付渠道：5.线下支付线上确认
     */
    @Positive(message = "支付渠道不能为空")
    private Long moneyPayChannel;

    /**
     * 备注
     */
    @NotBlank(message = "备注不能为空")
    private String remark;

    public Integer getSourceType() {
        return sourceType;
    }

    public void setSourceType(Integer sourceType) {
        this.sourceType = sourceType;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getApplyAbstract() {
        return applyAbstract;
    }

    public void setApplyAbstract(String applyAbstract) {
        this.applyAbstract = applyAbstract;
    }

    public Long getContractId() {
        return contractId;
    }

    public void setContractId(Long contractId) {
        this.contractId = contractId;
    }

    public String getPayeeName() {
        return payeeName;
    }

    public void setPayeeName(String payeeName) {
        this.payeeName = payeeName;
    }

    public String getBankAccount() {
        return bankAccount;
    }

    public void setBankAccount(String bankAccount) {
        this.bankAccount = bankAccount;
    }

    public String getBankDeposit() {
        return bankDeposit;
    }

    public void setBankDeposit(String bankDeposit) {
        this.bankDeposit = bankDeposit;
    }

    public Long getPayPlanId() {
        return payPlanId;
    }

    public void setPayPlanId(Long payPlanId) {
        this.payPlanId = payPlanId;
    }

    public Double getPayRatio() {
        return payRatio;
    }

    public void setPayRatio(Double payRatio) {
        this.payRatio = payRatio;
    }

    public Double getApplyAmount() {
        return applyAmount;
    }

    public void setApplyAmount(Double applyAmount) {
        this.applyAmount = applyAmount;
    }

    public String getExpectPayTime() {
        return expectPayTime;
    }

    public void setExpectPayTime(String expectPayTime) {
        this.expectPayTime = expectPayTime;
    }

    public Integer getPayWay() {
        return payWay;
    }

    public void setPayWay(Integer payWay) {
        this.payWay = payWay;
    }

    public Integer getPayParam() {
        return payParam;
    }

    public void setPayParam(Integer payParam) {
        this.payParam = payParam;
    }

    public Integer getMoneyPayWay() {
        return moneyPayWay;
    }

    public void setMoneyPayWay(Integer moneyPayWay) {
        this.moneyPayWay = moneyPayWay;
    }

    public Long getMoneyPayChannel() {
        return moneyPayChannel;
    }

    public void setMoneyPayChannel(Long moneyPayChannel) {
        this.moneyPayChannel = moneyPayChannel;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

}
